﻿#define _CRT_SECURE_NO_WARNINGS
//#include <stdio.h>
//#include <stdlib.h>

//#include <iostream>
//using std::cout;
//using std::endl;
//
//int main()
//{
//	//std::cout << "hello world" << std::endl;
//	cout << "hello world" << endl;
//	return 0;
//}


// C语言没办法解决类似这样的命名冲突问题，所以C++提出了namespace来解决
//namespace yin
//{
//	int rand = 10;
//}
//int main()
//{
//	printf("%p\n", rand);
//	printf("%d\n", yin::rand);
//	return 0;
//}


//int a = 2;
//void f1()
//{
//	int a = 0;
//	printf("%d\n", a);
//}
//void f2()
//{
//	int a = 1;
//	printf("%d\n", a);
//	printf("%d\n", ::a);  // ::作用域限定符
//}
//int main()
//{
//	printf("%d\n", a);
//	f1();
//	f2();
//	return 0;
//}

//namespace yin
//{
//	// 命名空间中可以定义变量/函数/类型
//	int rand = 10;
//
//	int Add(int left, int right)
//	{
//		return left + right;
//	}
//
//	struct Node
//	{
//		struct Node* next;
//		int val;
//	};
//}

//namespace N1
//{
//	int a;
//	int b;
//	int Add(int left, int right)
//	{
//		return left + right;
//	}
//
//	namespace N2
//	{
//		int c;
//		int d;
//		int Sub(int left, int right)
//		{
//			return left - right;
//		}
//	}
//}
//
//int main()
//{
//	N1::N2::c = 0;
//	return 0;
//}

//#include<iostream>
// std是C++标准库的命名空间名，C++将标准库的定义实现都放到这个命名空间中
//using namespace std;
//int main()
//{
//	cout << "Hello world!!!" << endl;
//	int n = 0;
//	cin >> n;
//	cout << n << endl;
//	return 0;
//}

//int main()
//{
//	int a;
//	double b;
//	char c;
//
//	// 可以自动识别变量的类型
//	cin >> a;
//	cin >> b >> c;
//
//	cout << a << endl;
//	cout << b << " " << c << endl;
//	return 0;
//}

//void Func(int a = 0)
//{
//	cout << a << endl;
//}
//int main()
//{
//	Func();// 没有传参时，使用参数的默认值
//	Func(10);// 传参时，使用指定的实参
//	return 0;
//}

//void Func1(int a = 10, int b = 20, int c = 30)
//{
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//	cout << "c = " << c << endl;
//	cout << endl;
//}
//
//void Func(int a , int b = 1, int c = 0)
//{
//	cout << "a = " << a << endl;
//	cout << "b = " << b << endl;
//	cout << "c = " << c << endl;
//	cout << endl;
//}
//int main()
//{
//	Func(1);
//	Func(1, 2);
//	Func(1, 2, 3);
//
//	return 0;
//}

#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
	cout << "int Add(int left, int right)" << endl;
	return left + right;
}
double Add(double left, double right)
{
	cout << "double Add(double left, double right)" << endl;
	return left + right;
}

// 2、参数个数不同
void f()
{
	cout << "f()" << endl;
}
void f(int a)
{
	cout << "f(int a)" << endl;
}

// 3、参数类型顺序不同
void f(int a, char b)
{
	cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
	cout << "f(char b, int a)" << endl;
}

//int main()
//{
//	f(10, 'a');
//	f('a', 10);
//
//	/*cout << Add(1, 2) << endl;
//	cout << Add(1.1, 2.2) << endl;*/
//
//	f();
//	f(2);
//	return 0;
//}

int main()
{
	/*int a = 5;
	int& b = a;
	cout << &a << endl;
	cout << &b << endl;
	int& c = a;
	int& x = c;*/
	char a = 'x';
	char& y = a;
	return 0;
}